vector<double>

来源:百度知道 编辑:UC知道 时间:2024/06/01 04:55:29
#include <iostream>
#include <vector>
using namespace std;

int main(){
vector<int> ivec(10,5);
vector<double> dvec(10,6.0);
ivec.assign(dvec.begin(),dvec.end());
return 0;
}
编译不通过 求高人指点

可能是你编译器的问题!
在visual studio 2008 上只是警告(当然,由于把double类型的值要赋给int类型的对象,可能会丢失数据)
如果你将上面的程序改成:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
vector<int> ivec(10,5);
vector<double> dvec(10,6.0);
dvec.assign(ivec.begin(),ivec.end());
copy(dvec.begin(), dvec.end(), ostream_iterator<double>(cout));
return 0;
}
即,将ivec的每个值赋给对应的dvec,则编译完美通过(没有任何警告)
其中:copy是为了输出dvec中的每个元素!
由此可见,上面的问题只不过是一个简单的"赋值也许会丢失数据"的类型转换例子而已
很高兴你能使用STL~

vector<int> ivec(10,5);
vector<double> dvec(10,6.0);

两者要一致 要不都int 要不都double~~